<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 06-03-2015
class Tutorxalumno extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todas las tutelas activas o inactivas pero NO las borradas (-1) de un tutor en particular
	function consultar($idTutor=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Segunda comprobacion: Que idTutor pasado sea numerico y mayor que cero.
			if(is_numeric($idTutor) && $idTutor>0){
				//Cargo el modelo donde estan los datos de los tutores
				$this->load->model('m_tutor');
				
				//Busco al tutor que hay que visualizarle las tutelas
				$tutor = $this->m_tutor->get($idTutor);
				
				//Tercera comprobacion: Que el tutor pasado por la url sea existente
				if($tutor->num_rows() == 1){
					//Busco todos los tutores activos
					$listadoTutores = $this->m_tutor->buscarActivos();
					
					//Le paso el listado de todos los tutores a la vista para que los muestre en la lista seleccionable para filtrar
					$datos['tutores'] = $listadoTutores;
					
					//Cargo el modelo donde estan los datos de las tutelas registradas para pedirle un listado de las tutelas del tutor pasado por la url
					$this->load->model('m_tutorxalumno');
					
					//Armamos la restriccion a la consulta de tutelas
					$restriccion = " AND tutorxalumno.idTutor=".$idTutor;
					
					//Busco todas las tutelas activas o inactivas, pero no las borradas segun la restriccion
					$listadoTutelas = $this->m_tutorxalumno->buscar($restriccion);
					
					//Le paso el listado de las tutelas a la vista para que las muestre en una tabla
					$datos['tutelas'] = $listadoTutelas;
					
					//Le paso cual es el tutor seleccionado
					$datos['idTutorSel'] = $idTutor;
					
					//Cargo la vista donde se muestra la tabla de tutelas y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_tutoresxalumnos', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar la tutela pasada por la url
	//El segundo parametro sirve para mostrar el resultado segun el tutor indicado
	function eliminar($idTxA=null, $idTutor=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Segunda comprobacion: Que idTxA pasado sea numerico y mayor que cero. Ademas que idTutor pasado sea numerico y mayor que cero.
			if(is_numeric($idTxA) && $idTxA>0 && is_numeric($idTutor) && $idTutor>0){
				//Cargo el modelo donde estan los datos de las tutelas registradas
				$this->load->model('m_tutorxalumno');
				
				//Busco a la tutela que hay que eliminar para comprobar que realmente exista
				$tutela = $this->m_tutorxalumno->get($idTxA);
				
				//Cargo el modelo donde estan los datos de los tutores registrados
				$this->load->model('m_tutor');
				
				//Busco al tutor para comprobar que existe realmente
				$tutor = $this->m_tutor->get($idTutor);
				
				//Tercera comprobacion: Que la tutela y el tutor pasados por la url sean existentes
				if($tutela->num_rows() == 1 && $tutor->num_rows() == 1){
					//Elimino a la tutela pasada por la url
					$respuesta = $this->m_tutorxalumno->eliminar($idTxA, $this->session->userdata('idUsuarioLog'));
					
					//Busco todos los tutores activos
					$listadoTutores = $this->m_tutor->buscarActivos();
					
					//Le paso el listado de todos los tutores a la vista para que los muestre en la lista seleccionable para filtrar
					$datos['tutores'] = $listadoTutores;
					
					//Armamos la restriccion a la consulta de tutelas
					$restriccion = " AND tutorxalumno.idTutor=".$idTutor;
					
					//Busco todas las tutelas activas o inactivas, pero no las borradas segun la restriccion que quedaron
					$listadoTutelas = $this->m_tutorxalumno->buscar($restriccion);
					
					//Le paso el listado de las tutelas a la vista para que las muestre en una tabla
					$datos['tutelas'] = $listadoTutelas;
					
					//Le paso cual es el tutor seleccionado
					$datos['idTutorSel'] = $idTutor;
					
					//Cargo la vista donde se muestra la tabla de tutelas
					$this->load->view('v_tutoresxalumnos', $datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Abre la pantalla con el formulario para crear una tutela nueva
	function abrirPantallaCrear($idTutor=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Segunda comprobacion: Que idTutor pasado sea numerico y mayor que cero.
			if(is_numeric($idTutor) && $idTutor>0){
				//Cargo el modelo donde estan los datos de los tutores registrados
				$this->load->model('m_tutor');
				
				//Busco al tutor al que hay que agregarle una tutela
				$tutor = $this->m_tutor->get($idTutor);
				
				//Tercera comprobacion: Que el tutor pasado por la url sea existente
				if($tutor->num_rows() == 1){
					//Le paso el tutor seleccionado
					$datos['idTutorSel'] = $idTutor;
					$datos['tutorSel'] = $tutor;
					
					//Cargo el modelo donde estan los datos de los alumnos registrados
					$this->load->model('m_alumno');
					
					//Busco a todos los alumnos menos el tutor si este tmb es un alumno activo en el sistema.
					//Tampoco busco a las personas que ya es tutor el.
					$restriccion = " AND persona.idPersona!=".$tutor->row()->idPersona." AND persona.idPersona NOT IN (SELECT alumno.idPersona 
																													   FROM tutorxalumno, tutor, alumno 
																													   WHERE tutorxalumno.idTutor=tutor.idTutor AND 
																															 tutorxalumno.idAlumno=alumno.idAlumno AND 
																															 tutor.idPersona=".$tutor->row()->idPersona." AND 
																															 tutorxalumno.estado>-1)";
					
					//Busco todos los alumnos activos
					$listadoAlumnos = $this->m_alumno->buscarActivos($restriccion);
					
					//Le paso el listado de todos los alumnos a la vista para que los muestre en la lista seleccionable
					$datos['alumnos'] = $listadoAlumnos;
					
					//Cargo la vista donde se muestra el formulario para crear una tutela y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_tutoresxalumnos_crear', $datos, true);
					
					//Cargo la vista principal con los datos de la vista para crear un registro
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro seleccionado no existe
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
		
	//Esto metodo no se puede llamar con ajax
	//Este metodo crea realmente la tutela. La respuesta se muestra en un iframe dentro del formulario
	function crear($idTutor=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){	   
			//Segunda comprobacion: Que se haya pasado por post el alumno, si es biologico, si se deben enviar notificaciones al tutor y el estado de la tutela a crear. Ademas por la url el tutor indicado.
			if(is_numeric($idTutor) && $idTutor>0 && is_numeric($this->input->post('alumno',true)) && $this->input->post('alumno',true)>0 && ($this->input->post('notificacion',true) == '1' || $this->input->post('notificacion',true) == '0') && ($this->input->post('biologico',true) == '1' || $this->input->post('biologico',true) == '0') && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de los tutores registrados
				$this->load->model('m_tutor');
				
				//Busco al tutor al que hay que agregarle una tutela
				$tutor = $this->m_tutor->get($idTutor);
				
				//Cargo el modelo donde estan los datos de los alumnos registrados
				$this->load->model('m_alumno');
				
				//Busco al alumno al que hay que agregarle una tutor
				$alumno = $this->m_alumno->get($this->input->post('alumno',true));
				
				//Tercera comprobacion: Que el tutor y el alumno pasado por la url sea existente
				if($tutor->num_rows() == 1 && $alumno->num_rows() == 1){
					//Cargo el modelo donde estan los datos de las tutelas
					$this->load->model('m_tutorxalumno');
					
					//Creamos la tutela
					$resultado = $this->m_tutorxalumno->crear($idTutor, $this->input->post('alumno',true), $this->input->post('biologico',true), $this->input->post('notificacion',true),  $this->input->post('estado',true), $this->session->userdata('idUsuarioLog'));
					
					if($resultado == 1){
						echo("<script> alert('La tutela se ha creado correctamente.');</script>");
					}else{
						echo("<script> alert('La tutela no se ha creado. Ha habido un error.');</script>");
					}
				} else {
						//El registro seleccionado no existe
						//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
						$this->session->sess_destroy();
						//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
						redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}		
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo abre la pantalla con los datos de la tutela pasada por la url
	function abrirPantallaModificar($idTxA=null, $idTutor=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Segunda comprobacion: Que idTxA pasado sea numerico y mayor que cero. Ademas que idTutor pasado sea numerico y mayor que cero.
			if(is_numeric($idTxA) && $idTxA>0 && is_numeric($idTutor) && $idTutor>0){
				//Cargo el modelo donde estan los datos de las tutelas registradas
				$this->load->model('m_tutorxalumno');
				
				//Busco a la tutela que hay que modificar para comprobar que exista
				$tutela = $this->m_tutorxalumno->get($idTxA);
				
				//Cargo el modelo donde estan los datos de los tutores registrados
				$this->load->model('m_tutor');
				
				//Busco al tutor para comprobar que existe
				$tutor = $this->m_tutor->get($idTutor);
				
				//Tercera comprobacion: Que la tutela y el tutor pasados por la url sean existentes
				if($tutela->num_rows() == 1 && $tutor->num_rows() == 1){
					//Le paso la tutela a modificar a la vista
					$datos['tutelaSel'] = $tutela;
					
					//Le paso el tutor que estaba seleccionado en la pantalla consultar
					$datos['idTutorSel'] = $idTutor;
					$datos['tutorSel'] = $tutor;
					
					//Busco a la tutela siguiente de la que hay que modificar
					$idTutelaSig = $this->m_tutorxalumno->getContiguo($idTxA,1, $idTutor);
					
					//Le paso la tutela siguiente de la que hay que modificar a la vista
					$datos['idTutelaSig'] = $idTutelaSig;
					
					//Busco a la tutela anterior de la que hay que modificar
					$idTutelaAnt = $this->m_tutorxalumno->getContiguo($idTxA,-1, $idTutor);
					
					//Le paso la tutela anterior de la que hay que modificar a la vista
					$datos['idTutelaAnt'] = $idTutelaAnt;
					
					//Cargo el modelo donde estan los datos de los alumnos registrados
					$this->load->model('m_alumno');
					
					//Busco a todos los alumnos menos el tutor si este tmb es un alumno activo en el sistema.
					$restriccion = " AND persona.idPersona!=".$tutor->row()->idPersona." AND persona.idPersona NOT IN (SELECT alumno.idPersona 
																													   FROM tutorxalumno, tutor, alumno 
																													   WHERE tutorxalumno.idTutor=tutor.idTutor AND 
																															 tutorxalumno.idAlumno=alumno.idAlumno AND 
																															 tutor.idPersona=".$tutor->row()->idPersona." AND 
																															 tutorxalumno.idTxA!=".$tutela->row()->idTxA." AND 
																															 tutorxalumno.estado>-1)";
					
					//Busco todos los alumnos y no solo los activos
					$listadoAlumnos = $this->m_alumno->buscar($restriccion);
					
					//Le paso el listado de todos los alumnos a la vista para que los muestre en la lista seleccionable
					$datos['alumnos'] = $listadoAlumnos;
					
					//Cargo la vista donde se muestra el formulario para modificar una tutela y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_tutoresxalumnos_modificar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para modificar una tutela
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de una tutela
	function modificar($idTxA=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){	   
			//Segunda comprobacion: Que se haya pasado por post el alumno, si es biologico, si se deben enviar notificaciones al tutor y el estado de la tutela a modificar. Ademas por la url la tutela indicada.
			if(is_numeric($idTxA) && $idTxA>0 && is_numeric($this->input->post('alumno',true)) && $this->input->post('alumno',true)>0 && ($this->input->post('notificacion',true) == '1' || $this->input->post('notificacion',true) == '0') && ($this->input->post('biologico',true) == '1' || $this->input->post('biologico',true) == '0') && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){
				//Cargo el modelo donde estan los datos de las tutelas
				$this->load->model('m_tutorxalumno');
				
				//Busco a la tutela que hay que modificar
				$tutela = $this->m_tutorxalumno->get($idTxA);
				
				//Cargo el modelo donde estan los datos de los alumnos registrados
				$this->load->model('m_alumno');
				
				//Busco al alumno para comprobar que exista
				$alumno = $this->m_alumno->get($this->input->post('alumno',true));
				
				//Tercera comprobacion: Que la tutela y el alumno pasado por la url sea existente
				if($tutela->num_rows() == 1 && $alumno->num_rows() == 1){
					//Modificamos la tutela
					$resultado = $this->m_tutorxalumno->modificar($idTxA, $this->input->post('alumno',true), $this->input->post('biologico',true), $this->input->post('notificacion',true),  $this->input->post('estado',true));
					
					if($resultado == 1){
						echo("<script> alert('La tutela se ha modificado correctamente.');</script>");
					}else{
						echo("<script> alert('La tutela no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}				
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
}